<?php
/**
 * Model:
 * Beinhlatet die Geschaeftslogik
 * zur Verfuegungstellung von benoetigten Daten (etwa aus einer Datenbank)
 *
 * @author		Joachim Ruf
 * @copyright	Copyright (c) 2003-2010 Loresoft Software (http://www.loresoft.de)
 * @license		http://yapary.loresoft.de/lizenzbedingungen     New BSD License
 *
 * */


Class Yapary_MVC_Model Implements Yapary_MVC_IModel
{
	/** @var Zentraler Dump fuer Model View und Controller */
	private   $oExchange = NULL;

    /** @var Referenz auf das in MVCHandler stehende Array arrException */
	private   $arrException;
    /** @object $oMVCConfig		: MVC-Konfigurationsklasse */
    private $oMVCConfig     = NULL;


	function __construct (Yapary_MVC_Exchange &$_cExchange, Yapary_MVC_MVCConfig &$_cMVCConfig)
	{
	    Yapary_TraceRoute::add();

	    $this->oExchange = $_cExchange;
		$this->oMVCConfig= $_cMVCConfig;
	}


	/**
	 * Leitet den Zugriff auf alle vorhandenen Methoden weiter
	 * Wichtig: nur bei Methoden ohne Parameterweitergabe moeglich
	 * {mexchange()}
	 * return Object|NULL
	 * */
	public function __get($objName)
	{
	    if (method_exists($this, $objName)) {
	        return $this->$objName();
	    } else {
	        $this->arrException[] = new Exception('Methode ' . $objName . '() existiert nicht.');
	    }
	}


	/**
	 * Gibt das Exchange-Objekt zurueck
	 * @return Yapary_MVC_Exchange
	 * */
	protected function exchange ()
	{
		if ($this->oExchange === NULL) {
			$this->arrException[] = new Exception('Exchangeobjekt existiert nicht');
			return NULL;
		}

		return $this->oExchange;
	}


	/**
	* Liefert alle ausgeloesten Exceptions
	* @return Array[Exception]
	*/
	public function &getExceptionList ()
	{
		return $this->arrException;
	}


	/**
	* Liefert die Anzahl der vorhandenen Exceptions
	* @return int
	*/
	public function getExceptionCount ()
	{
		return count($this->arrException);
	}
}



?>